SAY TRANSLATE$("") SCREEN 2,640,200,3,2 WINDOW 2,"",,0,2 GOSUB MakeScreen Start:g=-1:R(0)=-99:NP=12 DATA 1,0,1,0,0,0,-1,0,0,1,0,0,0,-1,0,-1,15 FOR x=7 TO 0 STEP -1:FOR y=0 TO 7:READ J:IF J=15 THEN 10 s(x,y)=J:GOTO 20 10 RESTORE:READ s(x,y) 20 NEXT y,x 30 FOR x=7 TO 0 STEP -1:FOR y=0 TO 7:IF s(x,y)>-1 THEN 40 IF s(x,y)=-1 THEN FOR a=-1 TO 1 STEP 2 b=g:GOSUB 50 NEXT a END IF IF s(x,y)=-2 THEN FOR a=-1 TO 1 STEP 2 FOR b=-1 TO 1 STEP 2 GOSUB 50 NEXT b,a END IF 40 NEXT y,x:GOTO 90 50 u=x+a:v=y+b:IF u<0 OR u>7 OR v<0 OR v>7 THEN 60 IF s(u,v)=0 THEN GOSUB 70:GOTO 60 IF s(u,v)<0 THEN 60 u=u+a:v=v+b:IF u<0 OR v<0 OR u>7 OR v>7 THEN 60 IF s(u,v)=0 THEN GOSUB 70 60 RETURN 70 IF v=0 AND s(x,y)=-1 THEN q=q+2 IF ABS(y-v)=2 THEN q=q+5 IF y=7 THEN q=q-2 IF y=0 OR u=7 THEN q=q+1 FOR c=-1 TO 1 STEP 2:IF u+c<0 OR u+c>7 OR v+g<0 THEN 80 IF s(u+c,v+g)<0 THEN q=q+1:GOTO 80 IF u-c<0 OR u-c>7 OR v-g>7 THEN 80 IF s(u+c,v+g)>0 AND (s(u-c,v-g)=0 OR (u-c=x AND v-g=y)) THEN q=q-2 80 NEXT c:IF q>R(0) THEN R(0)=q:R(1)=x:R(2)=y:R(3)=u:R(4)=v q=0:RETURN 90 IF R(0)=-99 THEN 260 'You Win R(0)=-99 100 IF R(4)=0 THEN s(R(3),R(4))=-2:GOTO 110 'King Computers Piece Count=Count+1:IF Count=1 THEN GOSUB PlaceCheckers IF s(R(1),R(2))=-1 AND R(2)2 THEN cc=-1:rr=-1:GOSUB move:GOTO 150 cc=(R(1)+R(3))/2:rr=(R(2)+R(4))/2 s(cc,rr)=0:GOSUB move 'clears spot jumped x=R(3):y=R(4):IF s(x,y)=-1 THEN b=-2:FOR a=-2 TO 2 STEP 4:GOSUB 130 IF s(x,y)=-2 THEN 120 NEXT a:IF R(0)<>-99 THEN R(0)=-99:GOTO 100 120 FOR a=-2 TO 2 STEP 4:FOR b=-2 TO 2 STEP 4:GOSUB 130:NEXT b NEXT a:IF R(0)<>-99 THEN R(0)=-99:GOTO 100 GOTO 150 130 u=x+a:v=y+b:IF u<0 OR u>7 OR v<0 OR v>7 THEN 140 IF s(u,v)=0 AND s(x+a/2,y+b/2)>0 THEN GOSUB 70 140 RETURN 150 LOCATE 1,1:PRINT SPACE$(80):LOCATE 1,1:PRINT "From "; 160 IF MOUSE(0)<>0 THEN 160 170 q$=INKEY$:IF q$=CHR$(139) THEN Help IF MOUSE(0)=0 THEN 170 col=MOUSE(1):row=MOUSE(2):GOSUB Calc IF col<0 OR col>7 OR row<0 OR row>7 THEN 150 PRINT col;" ";row:e=col:h=row IF e<0 OR h<0 THEN BEEP:GOTO 150 x=e:y=h:IF s(x,y)<=0 THEN BEEP:GOTO 150 180 LOCATE 1,30:PRINT SPACE$(15):LOCATE 1,30:PRINT "To "; IF MOUSE(0)=-1 THEN 185 IF MOUSE(0)=0 THEN 205 :ELSE 185 END IF 190 IF MOUSE(0)<>0 THEN 190 200 q$=INKEY$:IF q$=CHR$(139) THEN Help IF MOUSE(0)=0 THEN 200 205 col=MOUSE(1):row=MOUSE(2):GOSUB Calc IF col<0 OR col>7 OR row<0 OR row>7 THEN BEEP:GOTO 150 IF s(x,y)=1 AND row2 THEN cc=-1:rr=-1:GOSUB move:GOTO 250 cc=(e+a)/2:rr=(h+b)/2 IF s(cc,rr)=1 OR s(cc,rr)=2 THEN SAY TRANSLATE$("You cannot jump over yourself.") s(e,h)=s(a,b):s(a,b)=olds:GOTO 150 END IF s(cc,rr)=0:GOSUB move 'clears spot jumped by person 220 LOCATE 1,1:PRINT SPACE$(80):LOCATE 1,1 PRINT "Click again in the same place to end your move." LOCATE 1,60:PRINT "+To";:SAY TRANSLATE$("and") 230 IF MOUSE(0)<>0 THEN 230 240 q$=INKEY$:IF q$=CHR$(139) THEN Help IF MOUSE(0)=0 THEN 240 col=MOUSE(1):row=MOUSE(2):GOSUB Calc IF s(x,y)=1 AND row0 THEN BEEP:SAY TRANSLATE$("cheater cheater cheater."):GOTO 220 PRINT col;" ";row:a1=col:b1=row IF (a1=a AND b1=b) OR col<0 OR col>7 OR row<0 OR row>7 THEN 250 IF s(a1,b1)<>0 OR ABS(a1-a)<>2 OR ABS(b1-b)<>2 THEN 220 e=a:h=b:a=a1:b=b1 GOTO 210 250 IF b=7 THEN s(a,b)=2 GOTO 30 260 PRINT "You Win!":SAY TRANSLATE$("You Win!") GOTO PlayAgain ComputerWins:GOSUB move PRINT "I Win this Game!":SAY TRANSLATE$("I win this game!") PlayAgain: SAY TRANSLATE$("How about another?") PRINT:PRINT "(Y/N)" 270 a$=UCASE$(INKEY$):IF a$="" OR (a$<>"Y" AND a$<>"N") THEN 270 IF a$="Y" THEN GOSUB Draw:Count=0:GOTO Start :ELSE SAY TRANSLATE$("by by."):SYSTEM move: ee=e*50+160 hh=(-h+7)*20+31 aa=a*50+160 bb=(-b+7)*20+31 LINE(ee-24,hh-9)-(ee+24,hh+9),5,bf IF s(a,b)=1 THEN PUT(aa-12,bb-5),yellow,PSET IF s(a,b)=2 OR b=7 THEN PUT(aa-12,bb-5),yking,PSET IF s(a,b)=-1 THEN PUT(aa-12,bb-5),red,PSET IF cc>-1 AND rr>-1 THEN NP=NP-1:IF NP=0 THEN ComputerWins END IF SOUND 10000,0.05 IF s(a,b)=-2 THEN PUT(aa-12,bb-5),rking,PSET IF cc>-1 AND rr>-1 THEN NP=NP-1:IF NP=0 THEN ComputerWins END IF IF cc>-1 AND rr>-1 THEN ccc=cc*50+160 rrr=(-rr+7)*20+31 LINE(ccc-24,rrr-9)-(ccc+24,rrr+9),5,bf END IF RETURN PlaceCheckers: FOR z=0 TO 7 FOR x=0 TO 7 y=-z+7 xx=x*50+160 yy=y*20+31 IF s(x,-y+7)=1 THEN PUT(xx-12,yy-5),yellow,PSET IF s(x,-y+7)=-1 THEN PUT(xx-12,yy-5),red,PSET NEXT x,z RETURN Help: SAY TRANSLATE$("if you are really stuck - press Y.") 280 a$=UCASE$(INKEY$):IF a$="" THEN 280 IF a$="Y" THEN PRINT:GOTO ComputerWins SAY TRANSLATE$("o.k."):GOTO 150 Calc: IF col>135 AND col<185 THEN col=0 IF col>185 AND col<235 THEN col=1 IF col>235 AND col<285 THEN col=2 IF col>285 AND col<335 THEN col=3 IF col>335 AND col<385 THEN col=4 IF col>385 AND col<435 THEN col=5 IF col>435 AND col<485 THEN col=6 IF col>485 AND col<535 THEN col=7 IF row>21 AND row<41 THEN row=7 IF row>41 AND row<61 THEN row=6 IF row>61 AND row<81 THEN row=5 IF row>81 AND row<101 THEN row=4 IF row>101 AND row<121 THEN row=3 IF row>121 AND row<141 THEN row=2 IF row>141 AND row<161 THEN row=1 IF row>161 AND row<181 THEN row=0 RETURN MakeScreen: PALETTE 2,0.8,0,0 'red LOCATE 2,36:PRINT "Checkers" PRINT TAB(39);"by" PRINT TAB(35);"Steve Carr" LOCATE 7,3:PRINT "TO move - click the piece you want to move and then click on the spot" PRINT TAB(13);"where you want it" PRINT TAB(8);"Or - click the piece you want to move, hold the button down," PRINT TAB(13);"and let go of it over the spot you want the checker" LOCATE 15,9:PRINT "If at any time you absolutely can't make a move Press HELP" LOCATE 17,6:PRINT "TO cancel a move after choosing (from) - click in the brown area" LOCATE 20,24:PRINT "Do you want to be red or yellow?" COLOR 2,1:LOCATE 22,34:PRINT " Press R OR Y "; 290 c$=UCASE$(INKEY$):IF c$="" OR (c$<>"R" AND c$<>"Y") THEN 290 DIM yellow(44),red(44),yking(44),rking(44),R(4),s(7,7) PALETTE 0,0.6,0.33,0 'brown PALETTE 1,0.6,0.33,0 'brown PALETTE 3,0.87,0.8,0.4 'yellow PALETTE 4,1,0.4,0 'orange PALETTE 5,0.27,0.27,0.27 'dark grey PALETTE 6,0.8,0.8,0.8 'light grey PALETTE 7,0,0,0 'black COLOR 7,5:CLS CIRCLE(162,32),14,7 PAINT (162,32),7,7 CIRCLE (160,31),14,2 PAINT (160,31),4,2 CIRCLE (160,31),14,7 CIRCLE (160,31),9,7 PAINT (160,31),3,7 GET(146,25)-(176,38),yellow PAINT(160,31),2,7 GET(146,25)-(176,38),red COLOR 7,5:CLS PUT(146,21),red,PSET COLOR 7,2:LOCATE 4,1 PRINT PTAB(157);"K" CIRCLE(160,27),9,7 GET(146,21)-(176,34),rking COLOR 7,5:CLS PUT(146,21),yellow,PSET COLOR 7,3: LOCATE 4,1 PRINT PTAB(157);"K" CIRCLE(160,27),9,7 GET(146,21)-(176,34),yking Draw:COLOR 1,0:CLS LINE(136,22)-(534,180),6,bf FOR i=21 TO 181 STEP 20 LINE(135,i)-(535,i),7 NEXT i FOR i=135 TO 535 STEP 50 LINE(i,21)-(i,181),7 NEXT i LINE(134,21)-(134,181),7 LINE(535,21)-(551,26),7 LINE -(551,186),7 LINE -(148,186),7 LINE -(135,181),7 PAINT(549,30),7,7 FOR J=31 TO 151 STEP 40 FOR i=160 TO 460 STEP 100 LINE(i-24,J-9)-(i+24,J+9),5,bf NEXT i,J FOR J=51 TO 171 STEP 40 FOR i=210 TO 510 STEP 100 LINE(i-24,J-9)-(i+24,J+9),5,bf NEXT i,J:COLOR 7,0 IF c$="R" THEN Game=Game+1 IF Game=1 THEN FOR i=0 TO 44 SWAP red(i),yellow(i) SWAP rking(i),yking(i) NEXT i END IF END IF RETURN